package demo08.Adapter.iterenum;

import java.util.Arrays;
import java.util.Iterator;
import java.util.Vector;

public class EnumerationIteratorTestDrive {
	public static void main (String args[]) {
		//Vector 可实现自动增长的对象数组。 
		//java.util.vector提供了向量类(vector)以实现类似动态数组的功能。
		Vector<String> v = new Vector<String>(Arrays.asList(args));
		//Java中Arrays的asList()方法 可以将 数组转为List 但是，这个数组类型必须是 引用类型的
		Iterator<?> iterator = new EnumerationIterator(v.elements());//适配模式
		//elements() 方法用来返回这个向量的组件的枚举。返回Enumeration对象将生成此向量的所有项目在类似的索引位置
		while (iterator.hasNext()) {
			System.out.println(iterator.next());
		}
	}
}
/** 
 * （1）ArrayList是最常用的List实现类，内部是通过数组实现的，它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能含有“空隙”。 
 * 当数组大小不满足时会增加存储能力，将已有数组数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时，需要对数组进行拷贝，移动，代价比较高。因此，它适合随即查找和遍历，不适合插入和删除。 
 * （2）Vector与ArrayList一样，也是通过数组实现的。不同的是它支持线程的同步， 
 * 即一时刻只有一个线程能够写Vector，避免多线程同时写引起的不一致性。但实现同步需要很高的花费， 因此，访问它比访问ArrayList慢。 
 * （3）LinkedList是用链表结构存储数据的，很适合数据的动态插入和删除，随即访问和遍历速度比较慢。另外，它还提供了List没有定义的方法，专门用于操作表头和表尾元素，可以当作堆栈、队列和双向队列使用。 
 * （4）因为ArrayList和Vector都是用数组实现的，所以，在添加和插入时，最好从表尾操作，而不要从中间或者表头开始，以避免数组移动引起的开销！ 
 * （5）可以为每个List生成ListIterator，支持双向遍历List，而且能够在ListIterator位置插入和删除元素。 
 * （6）堆栈类继承Vector，它总是对列表的尾部数据进行操作，采用了先进后出的策略，自定义了插入、查看和弹出元素三个方法。 ArrayList 性能测试。
 */


